<?php

if (!defined('BASEPATH'))
    exit('No direct script access allowed');

class Hirek extends Frontend_Controller {

    function __construct() {
        parent::__construct();
        $this->load->model("hir_model");
        $this->load->model("tamogatok_model");
    }

    /**
     * 
     * Index Page for FRONTEND
     * 
     * 
     */
    public function index() {
        $this->hir_lista();
    }

    /**
     * 
     * Híreket listáz
     * 
     */
    public function hir_lista() {
        $this->data['title'] = "Hírek";
        $this->_load_view('frontend/hirek');
    }

    /**
     * 
     * html válasz a hírekre
     * 
     * meg lehet neki mondani post-al hogy mettől meddig listázza
     * 
     */
    public function get_hirek_ajax() {
        $this->benchmark->mark('hirek_ajax_start');
        // ha nem ajax kérés, akkor 404.
        if ($this->input->is_ajax_request() == FALSE) {
            show_404();
        }

        // json output
        $this->output->set_content_type('application/json');

        // azt, hogy hanyadik oldalt kérjük, megszerezzük a post-ból
        $page = $this->input->post("page");
        // ha ez nem valami szám, vagy nincs értéke, akkor hibát jelzünk.
        if (!$page || !is_numeric($page))
            show_404();
        // */
        // a paget szorzásra használjuk, mostantól az első oldal a 0.
        $page--;
        
        // kiszámoljuk milyen offset-től kérjük a támogatókat meg a híreket
        // a hireket 10-enként jelenítjük meg, a szponzorokat 5-önként
        $hirek_config = array(
            'offset' => ($page * 15),
            'limit' => 15,
            'order_by' => "hir_id",
            'order_dir' => "desc"
        );

        $tamogatok_config = array(
            'offset' => ($page * 5),
            'limit' => 5,
            'order_by' => "tamogato_suly",
            'order_dir' => "asc"
        );


        // lekérjük a híreket
        $hirek = $this->hir_model->get_hirek($hirek_config);
        // lekérjük a hirekhez a cimkéket
        foreach ($hirek as $hir) {
            $this->hir_cimke_model->hir_cimkek_hirhez($hir);
        }

        // 
        // EZEN AZ ALGON GYORSÍTANI LEHET
        // 
        // lekérjük a támogatókat
        $tamogatok = $this->tamogatok_model->get_tamogatok($tamogatok_config);
        // módosítsuk a támogatókat út, hogy a hir_tipus változója támogató
        // és belekeverjük a hírekbe a támogatókat
        foreach ($tamogatok as $tamogato) {
            $tamogato->hir_tipus = "tamogato";
            // belekeverjük a suly pozicióba
            // ha nagyobb a súlya mint ahová berakhatnánk
            if ($tamogato->tamogato_suly > $hirek_config['offset'] + 20) {
                // berakjuk az utolsó pozícióba
                array_push($hirek, $tamogato);
            } else {
                for ($i = $hirek_config['offset']; $i < $hirek_config['offset'] + 20; $i++) {
                    // egyébkénet ha a támogató suly szerint pont i helyére szúródna be
                    if ($tamogato->tamogato_suly == $i) {
                        $new_array = $hirek;
                        // arrébtoljuk
                        for ($j = $i; $j < sizeof($hirek); $j++) {
                            $new_array[$j - $hirek_config['offset'] + 1] = $hirek[$j - $hirek_config['offset']];
                        }
                        $new_array[$i] = $tamogato;
                        $hirek = $new_array;
                    }
                }
            }
        }// */
        //
        // itt megadja mennyi elemet tolt ki
        $data['jelenleg_elkuldve'] = sizeof($hirek);
        // az utolsó oldal?
        // megnézzük hány hír van összesen
        $data['total_hirek'] = $this->hir_model->count();
        $data['total_tamogatok'] = $this->tamogatok_model->count();
        $data['minden_elem'] = $data['total_hirek'] + $data['total_tamogatok'];
        
        // mennyi elem van még hátra? minimuma 0.
        // (minden elem) - (jelenleg elküldött elemek) - (oldalanként husz elem)
        $data['elemek_hatra'] = $data['minden_elem'] - $data['jelenleg_elkuldve'] - $page*20;
        if($data['elemek_hatra'] < 0) $data['elemek_hatra'] = 0;

        // az így keletkezett hírek lesz az átadott hírek
        $this->data['hirek'] = $hirek;



        // betöltjük a view-t
        $data['html'] = $this->load->view('frontend/ajax/ajax_hirek_view', $this->data, TRUE);
        
        // benchmarkot hozzátesszük
        $this->benchmark->mark('hirek_ajax_end');
        $data['bench'] = $this->benchmark->elapsed_time('hirek_ajax_start', 'hirek_ajax_end');
        // elküldjük a response-t
        $this->output->append_output(encode_json($data));
    }

}

/* End of file hirek.php */
/* Location: ./application/controllers/hirek.php */